//-----------------------------------------------------------------------------
// Bend2D - Physics Engine
// Roberto Bender <beto.bender@gmail.com>
// Description: 
// Date: 15/03/2010
//-----------------------------------------------------------------------------
#ifndef OBJECTCREATOR_H
#define OBJECTCREATOR_H

#include "boundary.h"
#include "windpoint.h"
#include "physicforce.h"
#include "rectangle.h"
#include "collision.h"

#include <string>
#include <list>
using namespace std;

namespace bend2d
{
    class ObjectCreator
    {
    public:
        // User Objects //
        virtual Boundary* CreateBoundary() const;
        virtual Boundary* CreateBoundary(const Line& line);
        virtual list<FastCast*> CreateBoundaryBox(const Rectangle& box);
        virtual Boundary* CreateWorldBoundary() const;
        virtual WindPoint* CreateWindPoint() const;
        virtual WindPoint* CreateWindPoint(const Point& position, const Speed& speed, const Acceleration& acceleration);
        virtual PhysicForce* CreatePhysicForce(const string& name);
        virtual Collision* AccessCollisionHandler();
    private:
        Collision m_CollisionHandler;
    };
}

#endif
